/*
 * @lc app=leetcode.cn id=335 lang=java
 *
 * [335] 路径交叉
 */

// @lc code=start
class Solution {
    public boolean isSelfCrossing(int[] d) {
        //画图找规律
        //distance < 4, return false
        //相交情况分类讨论:
        //d[i] 与 d[i - 3] 相交, d[i] >= d[i - 2], d[i - 1] <= d[i - 3]
        //d[i] 与 d[i - 4] 相交, d[i - 1] = d[i - 3], d[i] + d[i - 4] >= d[i - 2]
        //d[i] 与 d[i - 5] 相交, d[i - 1] <= d[i - 3], d[i - 1] + d[i - 5] >= d[i - 3]
        //                       d[i - 2] > d[i - 4],d[i] + d[i - 4] >= d[i - 2]
        int n = d.length;
        if(n < 4){
            return false;
        } 
        for(int i = 3; i < n;i++){
            if(d[i] >= d[i - 2] && d[i - 1] <= d[i - 3]){
                return true;
            }
            if(i >= 4 && d[i - 1] == d[i - 3] && d[i] + d[i - 4] >= d[i - 2]){
                return true;
            }
            if(i >= 5 && d[i - 1] <= d[i - 3] && d[i - 1] + d[i - 5] >= d[i - 3] && d[i - 2] > d[i - 4] && d[i] + d[i - 4] >= d[i - 2]){
                return true;
            }
        }
        return false;
    }
}
// @lc code=end

